package net.webookplus;

import com.poixson.pxnCommon.BukkitPlugin.pxnPlugin;
import com.poixson.pxnCommon.Logger.FormatChat;
import com.poixson.pxnCommon.dbPool.dbConfig;


public class WeBookPlus extends pxnPlugin {

	// plugin info
	private static WeBookPlus plugin = null;
	protected FormatChat chat = new FormatChat("{darkgreen}[{white}WeBookPlus{darkgreen}] ");

//	// listeners
//	private waListenerCommand listenerCommand = null;

//	// stats
//	private static pxnMetrics metrics = null;
//	private static waStatsCache statsCache = null;

//	// tasks
//	private pxnTask taskUpdatePlayers = null;
//	private pxnTask taskAnnouncer     = null;


	public WeBookPlus() {
		super();
		// only one instance allowed
		plugin = (WeBookPlus) SingleInstance(plugin, this);
isDebug = true;
	}
	// plugin name
	@Override
	public String getPluginName() {
		return "WeBookPlus";
	}
	// get plugin instance
	public static WeBookPlus getPlugin() {
		return plugin;
	}






	// load plugin
	@Override
	protected void StartPlugin() {
		// already loaded
		if(okEquals(true))
			StopPlugin();
		// starting plugin
		getLog().info("Starting..");

//		// command listener
//		if(listenerCommand == null) {
//			listenerCommand = new waListenerCommand();
//			registerListener(listenerCommand);
//		}

		// load config
		LoadConfig();

//TODO:
//		// connect to database
db = dbPool.factory(this, dbConfig.factory("127.0.0.1", 3306, "testuser", "testpass", "bukkitT"));




//TODO:
//		//### register listeners
//		try {
//			PluginManager pm = getServer().getPluginManager();
//this is in pxn			// server listener
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		if( == null)
//		pm.registerEvents(new WebAuctionPlayerListener(this), this);
//		if( == null)
//		pm.registerEvents(new WebAuctionBlockListener (this), this);

//		// update players task
//		taskUpdatePlayers = new TaskUpdatePlayers()
//			.setDelay(1)
//			.setPeriod(20)
//			.Start();
//		// announcer task
//		taskAnnouncer = new TaskAnnouncer()
//			.setDelay(1)
//			.setPeriod(20)
//			.Start();
//
//		// init metrics
//		try {
//			metrics = new pxnMetrics(this, "TestPlugin2");
//		} catch (IOException e) {
//			e.printStackTrace();
//		}

//TODO:
//		CheckUpdateAvailable();

		// done
getLog().info("WORKING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
		setOk(true);
	}


	// unload plugin
	@Override
	protected void StopPlugin() {
//		// stop tasks
//		try {
//			if(taskUpdatePlayers != null)
//				taskUpdatePlayers.Stop();
//			taskUpdatePlayers = null;
//		} catch (Exception ignore) {}
//		try {
//			if(taskAnnouncer != null)
//				taskAnnouncer.Stop();
//			taskAnnouncer = null;
//		} catch (Exception ignore) {}
//		// reset plugin state
//		setOk(false);
//		errorMsgs.clear();
	}


	private void LoadConfig() {
//		config = new pxnConfig(this);
	}


	public void onLoadMetrics() {
//		// usage stats
//		try {
//			metrics = new pxnMetrics(this);
//			if(metrics.isOptOut()) {
//				getLog().info("Plugin metrics are disabled, you bum.");
//				return;
//			}
//			getLog().info("Starting metrics");
//			// Create graphs for total Buy Nows / Auctions
//			pxnMetrics.Graph lineGraph = metrics.createGraph("Stacks For Sale");
//			pxnMetrics.Graph pieGraph  = metrics.createGraph("Selling Method");
//			// buy now count
//			pxnMetrics.Plotter plotterBuyNows = new pxnMetrics.Plotter("Buy Nows") {
//				@Override
//				public int getValue(){
//					return stats.getTotalBuyNows();
//return 11;
//				}
//			};
//			// auction count
//			pxnMetrics.Plotter plotterAuctions = new pxnMetrics.Plotter("Auctions") {
//				@Override
//				public int getValue(){
//					return stats.getTotalAuctions();
//return 11;
//				}
//			};
//			// total selling
//			lineGraph.addPlotter(plotterBuyNows);
//			lineGraph.addPlotter(plotterAuctions);
//			// selling ratio
//			pieGraph.addPlotter(plotterBuyNows);
//			pieGraph.addPlotter(plotterAuctions);
//			metrics.start();
//		} catch (IOException e) {
//			// Failed to submit the stats :-(
//			if(isDebug()) {
//				getLog().exception(e);
//			}
//		}
	}


}